package br.com.officium.managedbean.cadastro;

import br.com.officium.entidade.cadastro.LocalTramitacao;
import br.com.officium.sessionbean.LocalTramitacaoBsn;
import br.com.officium.util.BeanUtil;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Ivo
 */
@ManagedBean
@ViewScoped
public class LocalTramitacaoBean extends CadastroAbstractBean {

    @EJB
    private LocalTramitacaoBsn localTramitacaoBsn;
    private LocalTramitacao localTramitacao;
    private List<LocalTramitacao> locaisTramitacoes;

    public LocalTramitacaoBean() {
        this.localTramitacao = new LocalTramitacao();
    }

    @Override
    public String listar() {
        setCurrentState(LISTAR_STATE);
        locaisTramitacoes = localTramitacaoBsn.findAll();
        return "/cadastro/localTramitacao.jsf";
    }

    @Override
    public void cadastrar() {

        try {
            localTramitacaoBsn.create(localTramitacao);
            clear();
            BeanUtil.addInfo("Local de Tramitação criado com sucesso.");
            locaisTramitacoes = localTramitacaoBsn.findAll();
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }

    }

    @Override
    public void editar() {

        try {
            localTramitacaoBsn.edit(localTramitacao);
            clear();
            setCurrentState(LISTAR_STATE);
            BeanUtil.addInfo("Local de Tramitação alterado com sucesso.");
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }

    }

    @Override
    public void excluir() {

        try {
            localTramitacaoBsn.remove(localTramitacao);
            BeanUtil.addInfo("Local de Tramitação removido com sucesso.");
            locaisTramitacoes = localTramitacaoBsn.findAll();
        } catch (Exception e) {
            BeanUtil.addError(e.getMessage());
        }

    }

    @Override
    public boolean isPaginator() {
        return localTramitacaoBsn.count() > getRowNumber();
    }

    private void clear() {
        this.localTramitacao = new LocalTramitacao();
        super.cleanSubmittedValues(panelForm);
    }

    public List<LocalTramitacao> getLocaisTramitacoes() {
        return locaisTramitacoes;
    }

    public void setLocaisTramitacoes(List<LocalTramitacao> locaisTramitacoes) {
        this.locaisTramitacoes = locaisTramitacoes;
    }

    public LocalTramitacao getLocalTramitacao() {
        return localTramitacao;
    }

    public void setLocalTramitacao(LocalTramitacao localTramitacao) {
        this.localTramitacao = localTramitacao;
    }

}
